package top.csy8888.ws.server;

import jakarta.websocket.OnClose;
import jakarta.websocket.OnMessage;
import jakarta.websocket.OnOpen;
import jakarta.websocket.Session;
import jakarta.websocket.server.ServerEndpoint;

import java.io.IOException;

/**
 * @author CSY
 * @date 2025 - 09 - 18
 * WebSocket的服务端
 *
 * JSR标准注解@ServerEndpoint
 * 使用该注解标注的类将成为WebSocket的端点（服务端）
 * value属性指定连接服务端的url地址
 */
@ServerEndpoint("/connection")
public class WebSocketServer {

    /**
     * 当打开新连接时调用此方法
     * session是由web服务器为每一个连接的客户端
     * 创建的唯一会话，这个参数非常重要
     * 用于服务端区分不同的客户端进行通信
     */
    @OnOpen
    public void onOpen(Session session) {

        System.out.println("客户端已连接");
    }

    /**
     * 当接收到客户端发送的消息时调用此方法
     * @param message
     */
    @OnMessage
    public void onMessage(String message,Session session) throws IOException {
        System.out.println("接收到的消息："+message);
        //通过session对象发送信息给客户端
        session.getBasicRemote().sendText("Hello client");
    }

    /**
     * 客户端断开连接时调用此方法
     */
    @OnClose
    public void onClose(Session session){
        System.out.println("连接断开");
    }
}
